from pydub import AudioSegment

from tools.voice_utils import text_to_speech_lang
import os


def combine_mp3_with_pause(mp3_file1, mp3_file2, output_file, pause_duration_ms=500):
    """
    将两段 MP3 文件合并为一个文件，并在它们之间添加指定时长的停顿。

    参数:
    - mp3_file1: 第一个 MP3 文件的路径
    - mp3_file2: 第二个 MP3 文件的路径
    - output_file: 输出合并后的 MP3 文件路径
    - pause_duration_ms: 停顿的时长，单位为毫秒
    """
    # 加载两个MP3文件
    audio1 = AudioSegment.from_mp3(mp3_file1)
    audio2 = AudioSegment.from_mp3(mp3_file2)

    # 创建一段指定时长的停顿
    pause = AudioSegment.silent(duration=pause_duration_ms)

    # 将两段音频和停顿时间合并
    combined_audio = audio1 + pause + audio2

    # 导出合并后的音频为新的MP3文件
    combined_audio.export(output_file, format="mp3")

    # print(f"音频合并完成，文件已保存为 {output_file}")


def combine_texts_to_mp3(text1, is_chinese1, text2, is_chinese2, output_file, pause_duration_ms=500):
    """
    根据输入的两个文本生成语音并合并，支持中文和英文，合并后删除中间生成的临时文件。

    参数:
    - text1: 第一个文本内容
    - is_chinese1: 第一个文本是否为中文，True 为中文，False 为英文
    - text2: 第二个文本内容
    - is_chinese2: 第二个文本是否为中文，True 为中文，False 为英文
    - output_file: 输出合并后的 MP3 文件路径
    - pause_duration_ms: 停顿的时长，单位为毫秒，默认为 5000 毫秒（5 秒）
    """
    # 定义临时文件路径
    temp1_path = "temp1.mp3"
    temp2_path = "temp2.mp3"

    try:
        # 将文本转换为语音，生成临时 MP3 文件
        text_to_speech_lang(text1, temp1_path, is_chinese=is_chinese1)
        text_to_speech_lang(text2, temp2_path, is_chinese=is_chinese2)

        # 合并两个音频文件，并插入停顿时间
        combine_mp3_with_pause(temp1_path, temp2_path, output_file, pause_duration_ms)

        # print(f"合成完成，文件已保存为 {output_file}")

    finally:
        # 删除临时文件
        if os.path.exists(temp1_path):
            os.remove(temp1_path)
        if os.path.exists(temp2_path):
            os.remove(temp2_path)
        # print("临时文件已删除")